<?php

/**
 * votar actions.
 *
 * @package    SCCEIC
 * @subpackage votar
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 12479 2008-10-31 10:54:40Z fabien $
 */
class votarActions extends sfActions
{
 /**
  * Executes index action
  *
  * @param sfRequest $request A request object
  */
  public function executeIndex(sfWebRequest $request)
  {
    $this->categorias = CategoriaPeer::doSelect(new Criteria());
  	$this->voto = array();
  	$usuario = $this->getUser()->getAttribute('email');
  	foreach($this->categorias as $cat)
  	{
  		$criteria = new Criteria();
  		$criteria->add(VotoPeer::ID_USUARIO,$usuario,Criteria::EQUAL);
  		if($cat->countVotos($criteria)>0)
  		{
  			$this->voto = array_merge($this->voto,array('c'.$cat->getId() => 1));
  		}
  		else
  			$this->voto = array_merge($this->voto,array('c'.$cat->getId() => 0));
  	}
  }
  
  public function executeDovotar(sfWebRequest $request)
  {
  	$cat = $request->getParameter('cat');
  	if(is_null($cat))
  		$this->redirect404();
  		
  	$usuario = $this->getUser()->getAttribute('email');
  	
  	if(is_null(VotoPeer::retrieveByPK($usuario,$cat)))
  	{
  		$this->categoria = CategoriaPeer::retrieveByPK($cat);
  		$this->nominados = $this->categoria->getNominados(new Criteria());
  	}
  	else
  	{
  		$this->getUser()->setFlash('error','Ya votastes en la categoria seleccionada.');
  		$this->redirect('votar/index');
  	}
  }
  
  public function executeVotar(sfWebRequest $request)
  {
  	$cat = $request->getParameter('cat');
  	if(is_null($cat))
  		$this->redirect404();
  	$voto = $request->getParameter('voto');
  	$usuario = $this->getUser()->getAttribute('email');
  	//Verificar la validez de la categoria
  	if(is_null(CategoriaPeer::retrieveByPK($cat)))
  		$this->redirect404();
  	
  	if(is_null(VotoPeer::retrieveByPK($usuario,$cat)))
  	{
  		$nominado = NominadoPeer::retrieveByPK($voto);
  		if(is_null($nominado))
  			$this->redirect404();
  		$nominado->setCantVotos($nominado->getCantVotos()+1);
  		$nominado->save();
  		
  		$v = new Voto;
  		$v->setIdCategoria($cat);
  		$v->setIdUsuario($usuario);
  		$v->save();
  		
  		$this->getUser()->setFlash('good','Tu voto ha sido registrado satisfactoriamente.');
  		$this->redirect('votar/index');
  	}
  	else
  	{
  		$this->getUser()->setFlash('error','Ya votastes en la categoria seleccionada.');
  		$this->redirect('votar/index');
  	}
  }
}
